home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Games Machine 76
/
XENIATGM66.iso
/
Indiana Jones
/
Indiana Jones.exe
/
RESOURCE
/
PREVIEW.GOB
/
cog_pru_lightspike.cog
< prev
next >
Wrap
Text File
|
1999-11-15
|
10KB
|
366 lines
# Jones 3D Cog Script
#
# PRU_LightSpike.cog
#
# Player is killed by spikes if he enters the light
# [GGJ]
#
# (C) 1998 LucasArts Entertainment Co. All Rights Reserved
# ========================================================================================
symbols
message startup
message entered
message timer
message arrived
message touched
message sighted
message user0
message activated
message exited
thing spike0
thing spike1 nolink
thing spike2
thing spike3
thing spike4 nolink
thing spike5 nolink
thing spike6 nolink
thing spike7 nolink
thing spike8
thing spike9 nolink
thing spike10 nolink
thing spike11
thing spike12
thing spike13 nolink
thing spike14 nolink
thing spike15 nolink
thing player local
thing sapito #skeleton still on the spikes
thing forrestal #pile of bones on floor
thing actor local
thing arm
thing familiarCam #main camera for cutscene
thing LTresetCam #Temporary camera to revert to player
thing handCam #Shot of hand sticking into shaft
thing kneelCam #Indy kneels
thing shaftGhost #look target for actor to look at shaft
thing LTactor #actor
thing LTcamTarget0 #camera looks at this during main cutscene
thing handCamTarget #camera looks at this during hand shot
thing armGhost #arm moves to this
thing kneelGhost #where Indy kneels
template tplActor=indy_sh_actor local
keyframe skewered=in_die_buckle.key local
keyframe kneel=0in_stand6.key local
keyframe kneelDown=0in_stand1_bd_6.key local
keyframe standUp=0in_stand6_bd_1.key local
keyframe open=0in_openhand.key local
sound sndDie=tem_temspikes_up_kill_c.wav local
sound helloSapito=pu02j02.wav local
sound familiar=pu02j01.wav local
sound sprung=tem_temspikes_activate_c.wav local
sound musBoulder=mus_gen_eerie1.wav local
sound retract=shs_ticking.wav local
float moveSpeed=10.0 local
float retractTime=30.0 local
sector trapSector
sector lightSector
sector SapitoSector
sector oldBoulder
int numspikes=16 local
int victim local
int i=0 local
int triggered=0 local
int deadIndy local
int impaled=0 local
int once=0 local
int out=0 local
int tempCam local
int curCam local
int seenOnce=0 local
int kneelTrack local
int danger=0 local
int musOnce=0 local
flex tempRotVel local
flex playerSpot local
flex spikes local
float playery=0 local
float playerx=0 local
vector playervec local
surface westFloor
end
# ========================================================================================
code
startup:
player = GetLocalPlayerThing();
SetCollideType(sapito, 0);
SetThingCollideSize(forrestal, 0.075);
SetThingFlags(arm, 0x80000);
PlayKey(arm, open, 1, 0x4, 0);
return;
# ........................................................................................
entered:
if ((GetSenderRef() == oldBoulder) && (musOnce == 0))
{
musOnce=1;
PlaySoundLocal(musBoulder, 1.0, 0.0, 0x0, 0);
}
if (GetSenderRef() == lightSector)
{
danger=1;
PrintInt(danger);
if (triggered == 0)
{
call spikes;
}
}
if ((GetSenderRef() == trapSector) && (once == 0))
{
once = 1;
curCam = GetCurrentCamera();
StartCutscene(1);
#Stop the player from moving and put him in a standing position
MakeMeStop();
DeselectWeaponWait(player);
#jump the player forward to a ghost
#CopyOrientandPos(LTstartGhost, player);
#Create an actor at the player's location and swap them out
#actor = CreateThing(tplActor, player);
CopyPlayerHolsters(player, LTactor);
CaptureThing(LTactor);
SetThingFlags(player, 0x80000);
ResetThing(player);
ClearThingFlags(LTactor, 0x80000);
#Look from Indy to the pile of bones on the floor.
SetCameraFocus (2, familiarCam);
SetCameraLookInterp(2, 0);
SetCameraSecondaryFocus(2, LTcamTarget0);
SetCurrentCamera(2);
SetCameraFOV(65, 0, 0.0);
Sleep(0.3);
SetCameraLookInterp(2, 1);
SetCameraInterpSpeed(2, 3.5);
Sleep(0.3);
MoveToFrame(LTcamTarget0, 1, 1.0);
MoveToFrame(familiarCam, 1, 1.5);
SetCameraFOV(90, 1, 3.25);
Sleep(0.1);
#SetCameraSecondaryFocus(2, forrestal);
#Turn actor to look at the shaft
tempRotVel=VectorLen(GetThingRotVel(ltactor));
SetThingMaxRotVel(ltactor, 20.0);
AISetLookThing(ltactor, shaftGhost);
Sleep(0.5);
#"This trap looks familiar..."
PlayVoice(ltactor, familiar, 1, 0);
Sleep(1.5);
AISetLookThing(ltactor, forrestal);
Sleep(4.0);
#Return player control
CopyOrientandPos(ltactor, player);
SetThingFlags(ltactor, 0x80000);
SetThingMaxRotVel(ltactor, tempRotVel);
ClearThingFlags(player, 0x80000);
ClearActorFlags(player, 0x200000);
ResetCameraFOV(0, 0.0);
SetCameraLookInterp(2, 0);
tempCam = GetThingPos(LTresetCam);
SetCameraPosition(curcam, tempCam);
SetCurrentCamera(curcam);
EndCutscene();
}
return;
# ........................................................................................
activated:
#if ((GetSenderRef() == forrestal) && (GetThingSector(player) == trapSector))
print("activated floor");
playervec = GetThingLVec(player);
playery = VectorY(playervec);
playerx = VectorX(playervec);
#Check that Indy is on the west side, facing east.
if ((seenOnce == 0) && (GetSenderRef() == WestFloor) &&
((playerx > 0) && ((playery > -0.7) && (playery < 0.7))))
{
#seenOnce=1;
curCam=GetCurrentCamera();
MakeMeStop();
DeselectWeaponWait(player);
StartCutscene(1);
actor = CreateThing(tplActor, kneelGhost);
SetCameraFocus(2, kneelCam);
SetCameraSecondaryFocus(2, arm);
SetCurrentCamera(2);
SetCameraFOV(50, 0, 0.0);
CopyPlayerHolsters(player, actor);
CaptureThing(actor);
SetThingFlags(player, 0x80000);
ClearThingFlags(actor, 0x80000);
CopyOrientandPos(actor, player);
PlayKey(actor, kneelDown, 2, 0x12, 1);
kneelTrack = PlayKey(actor, kneel, 2, 0x14, 0);
Sleep(0.75);
SetCameraFocus(2, handCam);
SetCameraLookInterp(2, 0);
SetCameraSecondaryFocus(2, handCamTarget);
SetCurrentCamera(2);
SetCameraFOV(30, 0, 0.0);
Sleep(0.5);
ClearThingFlags(arm, 0x80000);
AISetMoveThing(arm, armGhost, 0.5);
Sleep(0.5);
SetThingFlags(arm, 0x80000);
SetCurrentCamera(curCam);
ResetCameraFOV(0, 0.0);
StopKey(actor, kneelTrack, 0.0); # no longer kneeling
PlayKey(actor, standUp, 2, 0x12, 0); # indy stands up
call spikes;
AISetLookThing(actor, Sapito);
Sleep(4.0);
CopyOrientandPos(actor, player);
ClearThingFlags(player, 0x80000);
ClearActorFlags(player, 0x200000);
SetThingFlags(actor, 0x80000);
EndCutscene();
}
return;
# ........................................................................................
timer:
for (i = 0; i < numspikes; i = i + 1)
{
MoveToFrame(spike0[i], 0, moveSpeed * 0.10);
MoveToFrame(sapito, 0, moveSpeed * 0.10);
PlaySoundThing(retract, spike0, 0.5, -1.0, -1.0, 0x0);
out = 0;
}
return;
# ........................................................................................
arrived:
print("arrived");
printInt(GetCurFrame(spike0));
if ((GetSenderRef() == spike0) && (GetCurFrame(spike0) == 0))
{
Sleep(0.5);
triggered = 0;
Print("Triggered=");
PrintInt(triggered);
}
return;
# ........................................................................................
touched:
if (impaled) return;
Print("touched");
# if (GetSenderRef() == skelton0) return;
# if ((IsMoving(spike0)) && (triggered == 1))
# {
# impaled=1;
# DamageThing(player, 1000.0, 0x1, victim);
# PlaySoundLocal(sndDie, 1.0, 0.0, 0x0, 0);
# SetThingFlags(player, 0x80000);
# deadIndy = CreateThing(tplActor, player);
# CaptureThing(deadIndy);
# ClearThingFlags(deadindy, 0x80000);
# PlayKey(deadindy, skewered, 4, 0x14, 0);
# }
return;
# ........................................................................................
sighted:
if ((GetSenderRef() == SapitoSector) && (impaled == 0) && (seenOnce == 0) && (out == 1))
{
seenOnce = 1;
Sleep(1.0);
PlayVoice(player, helloSapito, 1, 1);
}
return;
# ........................................................................................
exited:
if ((GetSenderRef() == lightSector) && (GetSourceRef() == player))
{
danger=0;
PrintInt(danger);
}
return;
# ........................................................................................
spikes:
for (i = 0; i < numspikes; i = i + 1)
{
MoveToFrame(spike0[i], 1, moveSpeed);
}
PlaySoundThing(sprung, spike0, 0.75, -1.0, -1.0, 0x0);
PlaySoundThing(sprung, spike8, 0.75, -1.0, -1.0, 0x0);
Print("whatever");
triggered = 1;
MoveToFrame(sapito, 1, moveSpeed);
SetTimer(10);
Sleep(0.25);
ClearSectorFlags(SapitoSector, 0x4000);
out = 1;
if (danger == 1)
{
DamageThing(player, 1000.0, 0x1, victim);
PlaySoundLocal(sndDie, 1.0, 0.0, 0x0, 0);
SetThingFlags(player, 0x80000);
deadIndy = CreateThing(tplActor, player);
CaptureThing(deadIndy);
ClearThingFlags(deadindy, 0x80000);
PlayKey(deadindy, skewered, 4, 0x14, 0);
impaled=1;
}
return;
# ........................................................................................
end